簡易版
#include <stdio.h>
main( )
{
int a,b,c,d,e,s,v;
scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);
s=2*(a*b+b*c+c*a)+8*d*(a+b+c-6*e);
v=a*b*c-2*d*((a-2*e)*(b-2*e)+(a-2*e)*(c-2*e)+(c-2*e)*(b-2*e));
printf("%d %d", s,v);
}
清楚說明版
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
// 先不要管 d, e 的值是否合理
int a, b, c, d, e;
// a= 6; b= 8; c= 10; d= 1; e= 2;
// answer= 472, 392
scanf("%d %d %d %d %d", &a, &b, &c, &d, &e);
// 先處理體積的部分
int v, v1, v2, v3;
v= a*b*c;
// 就a, c構成的面,必須扣除的體積
v1= d*(a - 2*e)*(c - 2*e);
// 就a, b構成的面,必須扣除的體積
v2= d*(a - 2*e)*(b - 2*e);
// 就b, c構成的面,必須扣除的體積
v3= d*(b - 2*e)*(c - 2*e);
// 因為前後,左右,上下對稱扣除
v-= (2*(v1 + v2 +v3)) ;
// printf("vol= %d \n", v);
// -------------------------------------------
// area --> r
int r, r1, r2, r3;
r= 2*(a*b + b*c + c*a);
// 就a, b構成的面,必須增加的面積
r1= 2*(d*(a - 2*e) + d*(b - 2*e));
// 就b, c構成的面,必須增加的面積
r2= 2*(d*(b - 2*e) + d*(c - 2*e));
// 就c, a構成的面,必須增加的面積
r3= 2*(d*(c - 2*e) + d*(a - 2*e));
// 因為前後,左右,上下對稱增加
r+= 2*(r1 + r2 + r3) ;
printf("%d %d\n", r, v);
return 0;
}